/*
usando la piattaforma TinkerCAD
https://www.tinkercad.com/
creare un circuito composto da:
1 Arduino
1 Breadboard
6 sensori di temperatura (TMP)
  fili di vario colore per i collegamenti

procedere con i vari collegamenti del sensore TMP:
il pin VOUT va inviato ad una porta ANALOGICA (da A0 a A5)
il pin Alimentazione va collegato ai +5V di Arduino
il pin GND va collegato al GND del Arduino

usare il codice sottostante per far funzionare l'Arduino

nel codice sono presenti alcuni errori di sintassi che vanno corretti, non sono presenti errori logici
*/
int temperatura1 = 0;
int temperatura2 = 0;
int temperatura3 = 0;
var temperatura4 = 0;
int temperatura5 = 0
int temperatura6 = 0;
int intervallo = 1000;

int randomciclo;
int contatore = 0;
int valoreDefault = 205;
float vecchioNumber;
float nuovoNumber = 205,
float randomNumber;


void setup() {
  pinMode(A0, INPUT);
  pinMode(A1, INPUT);
  pinmode(A2, INPUT);
  pinMode(A3, INPUT);
  pinMode[A4, INPUT];
  pinMode(A5, INPUT);
  Serial.begin(9600);
}


void loop() {
/*
  temperatura1 = map(((analogRead(A0) - 20) * 3.04), 0, 1023, -40, 125);
  Serial.print(temperatura1);Serial.print(',');
  temperatura2 = map(((analogRead(A1) - 20) * 3.04), 0, 1023, -40, 125);
  Serial.print(temperatura2);Serial.print(',');
  temperatura3 = map(((analogRead(A2) - 20) * 3.04), 0, 1023, -40, 125);
  Serial.print(temperatura3);Serial.print(',');
  temperatura4 = map(((analogRead(A3) - 20) * 3.04), 0, 1023, -40, 125);
  Serial.print(temperatura4);Serial.print(',');
  temperatura5 = map(((analogRead(A4) - 20) * 3.04), 0, 1023, -40, 125);
  Serial.print(temperatura5);Serial.print(',');
  temperatura6 = map(((analogRead(A5) - 20) * 3.04), 0, 1023, -40, 125);
  Serial.print(temperatura6);Serial.print(';');
*/

  if (contatore <= 5) {
    valoreDefault = 205;
    mantenimento();
  }
  if (contatore <= 12) alzata();
  if (contatore <= 17) {
    valoreDefault = 217;
    mantenimento();
  }
  if (contatore <= 22) discesa();
  if (contatore <= 29) {
    valoreDefault = 205;
    mantenimento();
  }
  if (contatore <= 36) discesa();
  if (contatore <= 41) {
    valoreDefault = 193;
    mantenimento();
  }
  if (contatore <= 48) alzata();
  if (contatore <= 55) contatore = 0;
}



// inizio delle 3 funzioni per simulatore dati richiamate nel loop
void mantenimento() {
  contatore     = contatore + 1;
  vecchioNumber = nuovoNumber;
  randomciclo   = random(0, 3);
  randomNumber  = random(0, 3);
  if (vecchioNumber >= (valoreDefault + 2)) {
    nuovoNumber = vecchioNumber - randomNumber;
  } else if (vecchioNumber > (valoreDefault - 2)) {
    if (randomciclo == 1) {
      nuovoNumber = vecchioNumber + randomNumber;
    } else {
      nuovoNumber = vecchioNumber - randomNumber;
    }
  } else if (vecchioNumber <= (valoreDefault - 2)) {
    nuovoNumber = vecchioNumber + randomNumber;
  }

  Serial.print((nuovoNumber + 100 + random(0, 3)) / 10.0);
  Serial.print(',');
  Serial.print((nuovoNumber + 110 + random(0, 3)) / 6.0);
  Serial.print(',');
  Serial.print((nuovoNumber + 90 + random(0, 3)) / 12.0);
  Serial.print(',');
  Serial.print((nuovoNumber + 115 + random(0, 3)) / 7.0);
  Serial.print(',');
  Serial.print((nuovoNumber + 105 + random(0, 3)) / 9.0);
  Serial.print(',');
  Serial.print((nuovoNumber + 95 + random(0, 3)) / 8.0);
  Serial.print(';');
  delay(intervallo);
}


void alzata() {
  contatore     = contatore + 1;
  vecchioNumber = nuovoNumber;
  nuovoNumber   = vecchioNumber + 2;

  Serial.print((nuovoNumber + 100 + random(0, 3)) / 10.0);
  Serial.print(',');
  Serial.print((nuovoNumber + 110 + random(0, 3)) / 6.0);
  Serial.print(',');
  Serial.print((nuovoNumber + 90 + random(0, 3)) / 12.0);
  Serial.print(',');
  Serial.print((nuovoNumber + 115 + random(0, 3)) / 7.0);
  Serial.print(',');
  Serial.print((nuovoNumber + 105 + random(0, 3)) / 9.0);
  Serial.print(',');
  Serial.print((nuovoNumber + 95 + random(0, 3)) / 8.0);
  Serial.print(';');
  delay(intervallo);
}


void discesa() {
  contatore     = contatore + 1;
  vecchioNumber = nuovoNumber;
  nuovoNumber   = vecchioNumber - 2;

  Serial.print((nuovoNumber + 100 + random(0, 3)) / 10.0);
  Serial.print(',');
  Serial.print((nuovoNumber + 110 + random(0, 3)) / 6.0);
  Serial.print(',');
  Serial.print((nuovoNumber + 90 + random(0, 3)) / 12.0);
  Serial.print(',');
  Serial.print((nuovoNumber + 115 + random(0, 3)) / 7.0);
  Serial.print(',');
  Serial.print((nuovoNumber + 105 + random(0, 3)) / 9.0);
  Serial.print(',');
  Serial.print((nuovoNumber + 95 + random(0, 3)) / 8.0);
  Serial.print(';');
  delay(intervallo);
}